package com.filetransfer.service;

import com.filetransfer.model.dto.MessageDTO;
import com.filetransfer.model.entity.Message;

import java.util.List;

/**
 * 消息服务接口
 */
public interface MessageService {
    
    /**
     * 发送消息
     *
     * @param messageDTO 消息信息
     * @return 消息ID
     */
    Long sendMessage(MessageDTO messageDTO);
    
    /**
     * 更新消息状态
     *
     * @param id 消息ID
     * @param status 状态
     * @return 是否成功
     */
    boolean updateStatus(Long id, Integer status);
    
    /**
     * 获取两个设备之间的消息
     *
     * @param deviceId1 设备ID1
     * @param deviceId2 设备ID2
     * @return 消息列表
     */
    List<MessageDTO> getMessagesBetween(String deviceId1, String deviceId2);
    
    /**
     * 获取未读消息数
     *
     * @param receiverId 接收者ID
     * @return 未读消息数
     */
    int getUnreadCount(String receiverId);
    
    /**
     * 标记消息为已读
     *
     * @param messageId 消息ID
     * @return 是否成功
     */
    boolean markAsRead(Long messageId);
    
    /**
     * 批量标记消息为已读
     *
     * @param senderId 发送者ID
     * @param receiverId 接收者ID
     * @return 更新的消息数
     */
    int markAllAsRead(String senderId, String receiverId);
    
    /**
     * 将实体转换为DTO
     *
     * @param message 消息实体
     * @param currentDeviceId 当前设备ID
     * @return 消息DTO
     */
    MessageDTO convertToDTO(Message message, String currentDeviceId);
} 